package Villanos;

import java.util.Random;

import Interfaz.RepresentacionGrafica;
import Juego.Casillero;
import Juego.Tablero;
import Heroes.Heroe;
import TDAMapeo.InvalidKeyException;

public class VillanoTransportador extends Villano{
	
	
	/**
	 * Constructor de la clase
	 * @param starPos posicion inicial en x
	 * @param altura posicion inicial en y
	 * @param fila fila en la que se encuentra
	 * @param t Tablero
	 */
	
	public VillanoTransportador(int starPos, int altura, int fila, Tablero t)
	{
		super("VillanoTransportador", 1200,2,30,200,30,fila,t);
		try {
			component=new RepresentacionGrafica(getTablero().getMapeo().get(nombre),starPos,altura+90);
		} catch (InvalidKeyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.position=starPos;
		this.altura=altura+70;
		tieneHabilidad=false;
	}
	
	/**
	 * Permite al villano transportarse de una fila a otra luego de haber matado a algun heroe 
	 */
	public void habilidad(Heroe h) {
		if (h!=null && position-h.getPosicion()<=900){
			
			Random n= new Random();
			int r=n.nextInt(5);
			//boolean otra=false;
			while (r==fila)
				r= n.nextInt(5);
			eliminar();
			fila=r;
			altura=fila*120+70;
			component.setLocation(position, fila*120+70);
			component.setVisible(true);
			tablero.getPanel().add(component);
			tablero.insertarVillano(this, r);
			
			tieneHabilidad=false;
			
		}
				
		}
			
	


	@Override
	/**
	*Permite atacar a un heroe
	**/
	protected void atacar(Casillero h) {
		component.setAtacando();
		component.setLocation(position-80,altura);
		while ((vida>0) && h.getEstaOcupado() && h.getHeroe().getVida()>0  && tablero.getVida()>0 )
		{	
			
			atacarHeroe(h.getHeroe());
			try {
				Thread.sleep(5000/velocidad);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if ((h.getHeroe()!=null) && (h.getHeroe().getVida()<=0)){	
			h.getHeroe().eliminar();
			tieneHabilidad=true;}
			component.setComun();
			component.setLocation(position+30,altura);
	}		
	}




